package arithmetic;

/**
 * @author jiangfeng 2022/3/19 10:00
 */
public class TestNewObject {
    public static void main(String[] args) {
        A a = new A();
        a.a=9;
        int b = a.a;
    }

    static class A{
        int a =8;

    }
    // 查看汇编方法： view-》 show byteCode jclassLib

    //0 new #2 <java/lang/Object>
    //3 dup
    //4 invokespecial #1 <java/lang/Object.<init> : ()V>
    //7 astore_1
    //8 return

    // 重点关注：
    // new #2 <java/lang/Object>   分配内存空间
    // invokespecial #1 <java/lang/Object.<init> : ()V>  初始化对象
    //  astore_1    指针指向对象
    // 后两行可能会 指令重排导致顺序调换。  使得 a！=null 为true，但是a对象实际没初始化、。
}
